/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dao;

import Bean.CadastroClienteBean;
import Utils.Conexao;
import Utils.DataConvert;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


/**
 *
 * @author william
 */
public class  CadastroClienteDao {

    public void  salvar(CadastroClienteBean p) throws SQLException {
        Connection con;
        con = Conexao.getConexao();
        String sql = "INSERT INTO `pessoa` (`idPessoa`, `cpf`, `nome`, `rg`, `endereco`, `telefone`, `nascimento`, `celular`, "
                + "`pai`, `mae`, `cep`, `numeroCasa`, `naturalidade`, `sexo`, `estadoCivil`, `cidade`, `ufNascimento`, `bairro`, "
                + "`estado`, `email`, `status`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
        
        p.setIdPessoa(getid());
        
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setInt(1, p.getIdPessoa());
        stmt.setString(2, p.getCpf());
        stmt.setString(3, p.getNome());
        stmt.setString(4, p.getRg());
        stmt.setString(5, p.getEndereco());
        stmt.setString(6, p.getTelefone());
        stmt.setDate(7, DataConvert.convert(p.getNascimento()));
        stmt.setString(8, p.getCelular());
        stmt.setString(9, p.getPai());
        stmt.setString(10, p.getMae());
        stmt.setString(11, p.getCep());
        stmt.setString(12, p.getNumeroCasa());
        stmt.setString(13, p.getNaturalidade());
        stmt.setString(14, p.getSexo());
        stmt.setString(15, p.getEstadocivil());
        stmt.setString(16, p.getCidade());
        stmt.setString(17, p.getUfNascimento());
        stmt.setString(18, p.getBairro());
        stmt.setString(19, p.getEstado());
        stmt.setString(20, p.getEmail());
        stmt.setString(21, p.getStatus());
        
        stmt.execute();
        stmt.close();
        con.close();
        salvarCliente(p);
    }
    
      public static void salvarCliente(CadastroClienteBean p) throws SQLException {
            Connection con;
        con = Conexao.getConexao();
        String sql = "INSERT INTO `cliente` (`idcliente`, `idpessoa`) VALUES (?,?);";
        
        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, p.getIdcliente());
        stmt.setInt(2, p.getIdPessoa());
        
        stmt.execute();
        stmt.close();
        con.close();
      }

    public static void alterar(CadastroClienteBean p) throws SQLException {
        Connection con;
        con = Conexao.getConexao();
        String query = "update pessoa set nome = ?, pai = ?, mae = ?, nascimento = ?, naturalidade = ?, rg = ?, cpf = ?, sexo = ?,"
          + " estadoCivil = ?, ufNascimento = ?, endereco = ?, bairro = ?, cidade = ?, celular = ?, email = ?, numeroCasa = ?, "
          + "cep = ?, estado = ?, telefone = ? where idPessoa = ?";
        
        System.out.println(p.getIdPessoa());
        PreparedStatement stmt = con.prepareStatement(query);
        stmt.setString(1, p.getNome());
        stmt.setString(2, p.getPai());
        stmt.setString(3, p.getMae());
        stmt.setDate(4, DataConvert.convert(p.getNascimento()));
        stmt.setString(5, p.getNaturalidade());
        stmt.setString(6, p.getRg());
        stmt.setString(7, p.getCpf());
        stmt.setString(8, p.getSexo());
        stmt.setString(9, p.getEstadocivil());
        stmt.setString(10, p.getUfNascimento());
        stmt.setString(11, p.getEndereco());
        stmt.setString(12, p.getBairro());
        stmt.setString(13, p.getCidade());
        stmt.setString(14, p.getCelular());
        stmt.setString(15, p.getEmail());
        stmt.setString(16, p.getNumeroCasa());
        stmt.setString(17, p.getCep());
        stmt.setString(18, p.getEstado());
        stmt.setString(19, p.getTelefone());
        stmt.setInt(20, p.getIdPessoa());
        stmt.executeUpdate();
        stmt.close();
        con.close();
    }

    public static String queryRelatorio(boolean opc, String tipo, String filtro) throws SQLException {
        String sql = "";
        if (opc) {
            sql = "SELECT"
                    + "     cliente.`cpf` AS cliente_cpf,"
                    + "     cliente.`nome_cliente` AS cliente_nome_cliente,"
                    + "     cliente.`rg` AS cliente_rg,"
                    + "     cliente.`endereco` AS cliente_endereco,"
                    + "     cliente.`telefone` AS cliente_telefone,"
                    + "     cliente.`nascimento` AS cliente_nascimento,"
                    + "     cliente.`celular` AS cliente_celular,"
                    + "     cliente.`pai` AS cliente_pai,"
                    + "     cliente.`mae` AS cliente_mae,"
                    + "     cliente.`cep` AS cliente_cep,"
                    + "     cliente.`numero_casa` AS cliente_numero_casa,"
                    + "     cliente.`naturalidade` AS cliente_naturalidade,"
                    + "     cliente.`sexo` AS cliente_sexo,"
                    + "     cliente.`estado_civil` AS cliente_estado_civil,"
                    + "     cliente.`cidade` AS cliente_cidade,"
                    + "     cliente.`uf_nascimento` AS cliente_uf_nascimento,"
                    + "     cliente.`bairro` AS cliente_bairro,"
                    + "     cliente.`estado` AS cliente_estado,"
                    + "     cliente.`email` AS cliente_email,"
                    + "     cliente.`idcliente` AS cliente_idcliente"
                    + " from cliente order by nome_cliente";
        } else {
            sql = "SELECT"
                    + "     cliente.`cpf` AS cliente_cpf,"
                    + "     cliente.`nome_cliente` AS cliente_nome_cliente,"
                    + "     cliente.`rg` AS cliente_rg,"
                    + "     cliente.`endereco` AS cliente_endereco,"
                    + "     cliente.`telefone` AS cliente_telefone,"
                    + "     cliente.`nascimento` AS cliente_nascimento,"
                    + "     cliente.`celular` AS cliente_celular,"
                    + "     cliente.`pai` AS cliente_pai,"
                    + "     cliente.`mae` AS cliente_mae,"
                    + "     cliente.`cep` AS cliente_cep,"
                    + "     cliente.`numero_casa` AS cliente_numero_casa,"
                    + "     cliente.`naturalidade` AS cliente_naturalidade,"
                    + "     cliente.`sexo` AS cliente_sexo,"
                    + "     cliente.`estado_civil` AS cliente_estado_civil,"
                    + "     cliente.`cidade` AS cliente_cidade,"
                    + "     cliente.`uf_nascimento` AS cliente_uf_nascimento,"
                    + "     cliente.`bairro` AS cliente_bairro,"
                    + "     cliente.`estado` AS cliente_estado,"
                    + "     cliente.`email` AS cliente_email,"
                    + "     cliente.`idcliente` AS cliente_idcliente"
                    + " from cliente ";
            if (tipo.equalsIgnoreCase("nome")) {
                sql += " where cliente.nome_cliente like '%" + filtro + "%'";
            } else {
                sql += " where cliente.cpf like '%" + filtro + "%'";
            }
            sql += " order by nome_cliente";
        }
        return sql;
    }

    
    //para puxar do banco para atualizar a tabela 
    public static List<CadastroClienteBean> getLista() throws SQLException {
        List<CadastroClienteBean> lista = new ArrayList<CadastroClienteBean>();
        Connection con = Conexao.getConexao();
        String sql =" SELECT  pessoa.idPessoa,  pessoa.cpf,  pessoa.nome,  pessoa.rg,  pessoa.endereco,  pessoa.telefone,"
+" pessoa.nascimento, pessoa.celular, pessoa.pai,  pessoa.mae, pessoa.cep, pessoa.numeroCasa,  "
+" pessoa.naturalidade,  pessoa.sexo,  pessoa.estadoCivil,  pessoa.cidade,  pessoa.ufNascimento,"
+" pessoa.bairro,  pessoa.estado,  pessoa.email,  pessoa.status,cliente.idCliente"
+" FROM pessoa,cliente"
+" WHERE pessoa.idPessoa=cliente.idPessoa";


               
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            CadastroClienteBean c = new CadastroClienteBean();
            c.setIdPessoa(rs.getInt("idPessoa"));
            c.setCpf(rs.getString("cpf"));
            c.setNome(rs.getString("nome"));
            c.setRg(rs.getString("rg"));
            c.setEndereco(rs.getString("endereco"));
            c.setTelefone(rs.getString("telefone"));
            c.setNascimento(rs.getDate("nascimento"));
            c.setCelular(rs.getString("celular"));
            c.setPai(rs.getString("pai"));
            c.setMae(rs.getString("mae"));
            c.setCep(rs.getString("cep"));
            c.setNumeroCasa(rs.getString("numeroCasa"));
            c.setNaturalidade(rs.getString("naturalidade"));
            c.setSexo(rs.getString("sexo"));
            c.setEstadocivil(rs.getString("estadoCivil"));
            c.setCidade(rs.getString("cidade"));
            c.setUfNascimento(rs.getString("ufNascimento"));
            c.setBairro(rs.getString("bairro"));
            c.setEstado(rs.getString("estado"));
            c.setEmail(rs.getString("email"));
            c.setStatus(rs.getString("status"));
            c.setIdcliente(rs.getInt("idCliente"));
            lista.add(c);
        }
        stmt.close();
        rs.close();
        con.close();
        return lista;
    }

    public static List<CadastroClienteBean> getLista(String tipo, String filtro) throws SQLException {
        List<CadastroClienteBean> lista = new ArrayList<CadastroClienteBean>();
        Connection con = Conexao.getConexao();
        String sql = "SELECT"
                + "     cliente.`cpf` AS cliente_cpf,"
                + "     cliente.`nome_cliente` AS cliente_nome_cliente,"
                + "     cliente.`rg` AS cliente_rg,"
                + "     cliente.`endereco` AS cliente_endereco,"
                + "     cliente.`telefone` AS cliente_telefone,"
                + "     cliente.`nascimento` AS cliente_nascimento,"
                + "     cliente.`celular` AS cliente_celular,"
                + "     cliente.`pai` AS cliente_pai,"
                + "     cliente.`mae` AS cliente_mae,"
                + "     cliente.`cep` AS cliente_cep,"
                + "     cliente.`numero_casa` AS cliente_numero_casa,"
                + "     cliente.`naturalidade` AS cliente_naturalidade,"
                + "     cliente.`sexo` AS cliente_sexo,"
                + "     cliente.`estado_civil` AS cliente_estado_civil,"
                + "     cliente.`cidade` AS cliente_cidade,"
                + "     cliente.`uf_nascimento` AS cliente_uf_nascimento,"
                + "     cliente.`bairro` AS cliente_bairro,"
                + "     cliente.`estado` AS cliente_estado,"
                + "     cliente.`email` AS cliente_email,"
                + "     cliente.`idcliente` AS cliente_idcliente"
                + " from cliente ";
        if (tipo.equalsIgnoreCase("nome")) {
            sql += " where cliente.nome_cliente like '%" + filtro + "%'";
        } else {
            sql += " where cliente.cpf like '%" + filtro + "%'";
        }
        sql += " order by nome_cliente";


        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            CadastroClienteBean c = new CadastroClienteBean();
            c.setIdcliente(rs.getInt("cliente_idcliente"));
            c.setNome(rs.getString("cliente_nome_cliente"));
            c.setPai(rs.getString("cliente_pai"));
            c.setMae(rs.getString("cliente_mae"));
            c.setNascimento(rs.getDate("cliente_nascimento"));
            c.setNaturalidade(rs.getString("cliente_naturalidade"));
            c.setRg(rs.getString("cliente_rg"));
            c.setCpf(rs.getString("cliente_cpf"));
            c.setEstadocivil(rs.getString("cliente_estado_civil"));
            c.setEstado(rs.getString("cliente_uf_nascimento"));
            c.setEndereco(rs.getString("cliente_endereco"));
            c.setBairro(rs.getString("cliente_bairro"));
            c.setCidade(rs.getString("cliente_cidade"));
            c.setCelular(rs.getString("cliente_celular"));
            c.setEmail(rs.getString("cliente_email"));
            c.setNumeroCasa(rs.getString("cliente_numero_casa"));
            c.setCep(rs.getString("cliente_cep"));
            c.setEstado(rs.getString("cliente_estado"));
            c.setTelefone(rs.getString("cliente_telefone"));
            c.setSexo(rs.getString("cliente_sexo"));
            lista.add(c);
        }
        stmt.close();
        rs.close();
        con.close();
        return lista;
    }

//    public static void excluir(int id) throws SQLException {
//        Connection con = Conexao.getConexao();
//        String sql = "delete from cliente where idcliente=" + id;
//        PreparedStatement stmt = con.prepareStatement(sql);
//        stmt.executeUpdate();
//        stmt.close();
//        con.close();
//    }
    
     public int getid() throws SQLException {
       int id=0;
        Connection con = Conexao.getConexao();
        String sql = "select ifnull(max(pessoa.idPessoa),1)+1 from pessoa";

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        if (rs.next()) {
        id=rs.getInt(1);
        }
        stmt.close();
        rs.close();
        con.close();
        return id;
    }

}